React ํ๋กํ์ผ๋ฌ๋ฅผ ๋ง์คํฐํ์ฌ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์๋์ ํจ์จ์ฑ์ ์ต์ ํํ์ธ์. React ์ปดํฌ๋ํธ ๋ ๋๋ง์ ์ธก์ , ๋ถ์, ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋ณด์ธ์.
React ํ๋กํ์ผ๋ฌ: ์น ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ ์ธก์ ๋ฐ ์ต์ ํ
์ญ๋์ ์ธ ์น ๊ฐ๋ฐ์ ์ธ๊ณ์์ ์ฑ๋ฅ์ ๊ฐ์ฅ ์ค์ํฉ๋๋ค. ์ฌ์ฉ์๋ค์ ์์น๋ ๊ธฐ๊ธฐ์ ๊ด๊ณ์์ด ๋ฐ์์ด ๋น ๋ฅด๊ณ ํจ์จ์ ์ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ธฐ๋ํฉ๋๋ค. ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌ์ถ์ ๋๋ฆฌ ์ฌ์ฉ๋๋ JavaScript ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ธ React๋ ๊ฐ๋ฐ์๊ฐ ์ต์ ์ ์ฑ๋ฅ์ ๋ฌ์ฑํ๋๋ก ๋๋ ๊ฐ๋ ฅํ ๋๊ตฌ์ธ React ํ๋กํ์ผ๋ฌ๋ฅผ ์ ๊ณตํฉ๋๋ค. ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์๋ React ํ๋กํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ์ฌ React ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ํด๊ฒฐํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋ถ๋๋ฝ๊ณ ๋งค๋ ฅ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ๋ณด์ฅํ๋ ํฌ๊ด์ ์ธ ๊ฐ์ด๋๋ฅผ ์ ๊ณตํฉ๋๋ค.
React ์ฑ๋ฅ์ ์ค์์ฑ ์ดํดํ๊ธฐ
React ํ๋กํ์ผ๋ฌ์ ์ธ๋ถ ์ฌํญ์ ์ดํด๋ณด๊ธฐ ์ ์ ์น ์ ํ๋ฆฌ์ผ์ด์ ์์ ์ฑ๋ฅ์ด ์ ๊ทธํ ๋ก ์ค์ํ์ง ์ดํดํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค:
- ์ฌ์ฉ์ ๊ฒฝํ: ๋๋ฆฌ๊ฑฐ๋ ๋ฐ์์ด ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉ์์ ๋ถ๋ง๊ณผ ์ดํ๋ก ์ด์ด์ง๋๋ค. ์ํํ ์ฌ์ฉ์ ๊ฒฝํ์ ์ฌ์ฉ์ ๋ง์กฑ๋์ ์ฐธ์ฌ์ ํ์์ ์ ๋๋ค.
- ๊ฒ์ ์์ง ์ต์ ํ(SEO): Google๊ณผ ๊ฐ์ ๊ฒ์ ์์ง์ ํ์ด์ง ๋ก๋ ์๋๋ฅผ ์์ ๊ฒฐ์ ์์ธ์ผ๋ก ๊ณ ๋ คํฉ๋๋ค. ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ต์ ํํ๋ฉด ๊ฒ์ ๊ฒฐ๊ณผ์์ ๊ฐ์์ฑ์ ๋์ผ ์ ์์ต๋๋ค.
- ์ ํ์จ: ์ ์ ์๊ฑฐ๋ ๋ฐ ๊ธฐํ ์จ๋ผ์ธ ๋น์ฆ๋์ค์์ ๋ก๋ฉ ์๊ฐ์ด ๋น ๋ฅผ์๋ก ์ ํ์จ์ด ๋์์ง๊ณ ์์ต์ด ์ฆ๊ฐํ ์ ์์ต๋๋ค. ์ฐ๊ตฌ์ ๋ฐ๋ฅด๋ฉด ํ์ด์ง ์๋์ ์์ ๊ฐ์ ๋ง์ผ๋ก๋ ๋งค์ถ์ ์๋นํ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
- ์ ๊ทผ์ฑ: ์ธํฐ๋ท ์ฐ๊ฒฐ์ด ๋๋ฆฌ๊ฑฐ๋ ๊ตฌํ ๊ธฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ ์ฌ์ฉ์๋ ์ต์ ํ๊ฐ ์ ๋๋ก ๋์ง ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฌ์ฉํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช์ ์ ์์ต๋๋ค. ์ฑ๋ฅ์ ์ฐ์ ์ํ๋ฉด ๋ ๋ง์ ์ฌ์ฉ์๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผํ ์ ์์ต๋๋ค.
- ์์ ์๋น: ํจ์จ์ ์ผ๋ก ์์ฑ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ CPU ๋ฐ ๋ฉ๋ชจ๋ฆฌ์ ๊ฐ์ ์์์ ๋ ์ ๊ฒ ์๋นํ์ฌ ์๋์ง ์๋น๋ฅผ ์ค์ด๊ณ ๋น์ฉ์ ์ ๊ฐํฉ๋๋ค.
React ํ๋กํ์ผ๋ฌ ์๊ฐ
React ํ๋กํ์ผ๋ฌ๋ Chrome, Firefox, Edge์์ ์ฌ์ฉํ ์ ์๋ ๋ธ๋ผ์ฐ์ ํ์ฅ ํ๋ก๊ทธ๋จ์ธ React ๊ฐ๋ฐ์ ๋๊ตฌ์ ์ง์ ๋ด์ฅ๋ ์ฑ๋ฅ ๋ถ์ ๋๊ตฌ์ ๋๋ค. ์ด๋ฅผ ํตํด React ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค๋ฅธ ๋ถ๋ถ์ด ๋ ๋๋ง๋๋ ๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ ์ธก์ ํ๊ณ , ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ฉฐ, ๋ ๋๋ง ์๊ฐ์ด ๋๋ ค์ง๋ ์์ธ์ ๋ํ ํต์ฐฐ๋ ฅ์ ์ป์ ์ ์์ต๋๋ค.
ํ๋กํ์ผ๋ฌ๋ ์ปดํฌ๋ํธ ๋ ๋๋ง ์๊ฐ์ ๋ํ ์์ธํ ๋ถ์์ ์ ๊ณตํ์ฌ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ํน์ ์ปดํฌ๋ํธ๋ฅผ ์ ํํ ์ฐพ์๋ผ ์ ์์ต๋๋ค. ๋ํ prop ๋ณ๊ฒฝ์ด๋ state ์ ๋ฐ์ดํธ์ ๊ฐ์ ๋ฆฌ๋ ๋๋ง์ ์์ธ์ ๋ํ ์ ์ฉํ ์ ๋ณด๋ ์ ๊ณตํฉ๋๋ค.
React ํ๋กํ์ผ๋ฌ ์ค์ ํ๊ธฐ
React ํ๋กํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด ๋จผ์ ๋ธ๋ผ์ฐ์ ์ React ๊ฐ๋ฐ์ ๋๊ตฌ ํ์ฅ ํ๋ก๊ทธ๋จ์ ์ค์นํด์ผ ํฉ๋๋ค. ์ค์น๊ฐ ์๋ฃ๋๋ฉด ๋ธ๋ผ์ฐ์ ์์ ๊ฐ๋ฐ์ ๋๊ตฌ ํจ๋์ ์ด๊ณ "Profiler" ํญ์ ์ ํํฉ๋๋ค.
ํ๋กํ์ผ๋ฌ๋ ๊ฐ๋ฐ ๋ชจ๋์์ ๊ธฐ๋ณธ์ ์ผ๋ก ํ์ฑํ๋ฉ๋๋ค. ํ๋ก๋์ ํ๊ฒฝ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ํ๋กํ์ผ๋งํ๋ ค๋ฉด ํ๋กํ์ผ๋ฌ๊ฐ ํฌํจ๋ React์ ํน์ ๋น๋๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค. ์ด๋ npm์์ `react-dom/profiling` ๋๋ `scheduler/profiling`๊ณผ ๊ฐ์ ํน์ ๋น๋๋ฅผ ๊ฐ์ ธ์์ ์ํํ ์ ์์ต๋๋ค. ์ด ๋น๋๋ ์๋นํ ์ค๋ฒํค๋๋ฅผ ์ถ๊ฐํ๋ฏ๋ก ํ๋กํ์ผ๋ง์๋ง ์ฌ์ฉํด์ผ ํ๋ค๋ ์ ์ ๊ธฐ์ตํ์ธ์.
React ์ ํ๋ฆฌ์ผ์ด์ ํ๋กํ์ผ๋งํ๊ธฐ
ํ๋กํ์ผ๋ฌ๊ฐ ์ค์ ๋๋ฉด ํ๋กํ์ผ๋ฌ ํจ๋์ "Record" ๋ฒํผ์ ํด๋ฆญํ์ฌ ์ฑ๋ฅ ๋ฐ์ดํฐ ๊ธฐ๋ก์ ์์ํ ์ ์์ต๋๋ค. ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ํ๋ฏ์ด ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ํธ ์์ฉํ์ฌ UI์ ๋ค๋ฅธ ์ปดํฌ๋ํธ์ ์น์ ์ ๋ ๋๋ง์ ํธ๋ฆฌ๊ฑฐํฉ๋๋ค. ์์ ์ด ๋๋๋ฉด "Stop" ๋ฒํผ์ ํด๋ฆญํ์ฌ ๊ธฐ๋ก์ ์ข ๋ฃํฉ๋๋ค.
๊ทธ๋ฌ๋ฉด ํ๋กํ์ผ๋ฌ๊ฐ ๊ธฐ๋ก๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ณ ์ปดํฌ๋ํธ ๋ ๋๋ง ์๊ฐ์ ์์ธํ ํ์๋ผ์ธ์ ํ์ํฉ๋๋ค. ์ด ํ์๋ผ์ธ์ ๊ฐ ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง๋๋ ๋ฐ ๊ฑธ๋ฆฐ ์๊ฐ๊ณผ ๋ ๋๋ง๋ ์์๋ฅผ ์๊ฐ์ ์ผ๋ก ๋ณด์ฌ์ค๋๋ค.
ํ๋กํ์ผ๋ฌ ๋ฐ์ดํฐ ๋ถ์ํ๊ธฐ
React ํ๋กํ์ผ๋ฌ๋ ์ฑ๋ฅ ๋ฐ์ดํฐ ๋ถ์์ ์ํ ์ฌ๋ฌ ๊ฐ์ง ๋ค๋ฅธ ๋ทฐ๋ฅผ ์ ๊ณตํฉ๋๋ค:
- ํ๋ ์ ์ฐจํธ(Flame Chart): ํ๋ ์ ์ฐจํธ๋ ์ปดํฌ๋ํธ ๋ ๋๋ง ์๊ฐ์ ๊ณ์ธต์ ์ผ๋ก ๋ณด์ฌ์ฃผ์ด ๋ ๋๋ง์ ๊ฐ์ฅ ๋ง์ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ๊ฒ ์๋ณํ ์ ์๊ฒ ํด์ค๋๋ค. ์ฐจํธ์ ๊ฐ ๋ง๋ ๋์ด๋ ํด๋น ์ปดํฌ๋ํธ๋ฅผ ๋ ๋๋งํ๋ ๋ฐ ๊ฑธ๋ฆฐ ์๊ฐ์ ๋ํ๋ ๋๋ค.
- ๋ญํน ์ฐจํธ(Ranked Chart): ๋ญํน ์ฐจํธ๋ ๋ ๋๋ง์ ๊ฑธ๋ฆฐ ์๊ฐ์์ผ๋ก ์ ๋ ฌ๋ ์ปดํฌ๋ํธ ๋ชฉ๋ก์ ํ์ํฉ๋๋ค. ์ด๋ฅผ ํตํด ์ ์ฒด ๋ ๋๋ง ์๊ฐ์ ๊ฐ์ฅ ๋ง์ด ๊ธฐ์ฌํ๋ ์ปดํฌ๋ํธ๋ฅผ ์ ์ํ๊ฒ ์๋ณํ ์ ์์ต๋๋ค.
- ์ปดํฌ๋ํธ ์ฐจํธ(Component Chart): ์ปดํฌ๋ํธ ์ฐจํธ๋ ํน์ ์ปดํฌ๋ํธ์ ๋ ๋๋ง ์๊ฐ์ ๋ํ ์์ธํ ๋ถ์์ ํ์ํ๋ฉฐ, ๋ ๋๋ง ํ๋ก์ธ์ค์ ๊ฐ ๋จ๊ณ(์: ๋ง์ดํ , ์ ๋ฐ์ดํธ, ์ธ๋ง์ดํ )์ ์์๋ ์๊ฐ์ ํฌํจํฉ๋๋ค.
- ์ํธ์์ฉ(Interactions): ์ํธ์์ฉ ๋ทฐ๋ฅผ ์ฌ์ฉํ๋ฉด ์ฌ์ฉ์ ์ํธ์์ฉ๋ณ๋ก ๋ ๋๋ง์ ๊ทธ๋ฃนํํ ์ ์์ต๋๋ค. ์ด๋ ํน์ ์ฌ์ฉ์ ํ๋ฆ์ ํน์ ํ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์๋ณํ๋ ๋ฐ ์ ์ฉํฉ๋๋ค. ์๋ฅผ ๋ค์ด, ํน์ ๋ฒํผ ํด๋ฆญ์ด ์ฐ์์ ์ธ ๋ฆฌ๋ ๋๋ง์ ์ ๋ฐํ๋ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
ํ๋กํ์ผ๋ฌ ๋ฐ์ดํฐ๋ฅผ ๋ถ์ํ ๋ ๋ค์ ์ฌํญ์ ์ฃผ์ํ์ธ์:
- ๊ธด ๋ ๋๋ง ์๊ฐ: ๋ ๋๋งํ๋ ๋ฐ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆฌ๋ ์ปดํฌ๋ํธ๋ฅผ ์๋ณํ์ธ์. ์ด๋ ์ ์ฌ์ ์ธ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ๋๋ค.
- ๋น๋ฒํ ๋ฆฌ๋ ๋๋ง: ์์ฃผ ๋ฆฌ๋ ๋๋ง๋๋ ์ปดํฌ๋ํธ๋ฅผ ์ฐพ์ผ์ธ์. ์ด ๋ํ ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค.
- ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง: ์ปดํฌ๋ํธ์ prop์ด ๋ณ๊ฒฝ๋์ง ์์์์๋ ๋ถ๊ตฌํ๊ณ ๋ถํ์ํ๊ฒ ๋ฆฌ๋ ๋๋ง๋๋์ง ํ์ธํ์ธ์.
- ๋ฌด๊ฑฐ์ด ๊ณ์ฐ: ๋ ๋๋ง ๊ณผ์ ์์ ๋ฌด๊ฑฐ์ด ๊ณ์ฐ์ ์ํํ๋ ์ปดํฌ๋ํธ๋ฅผ ์๋ณํ์ธ์. ์ด๋ ๋ ๋๋ง ์๊ฐ์ ๋ฆ์ถ ์ ์์ต๋๋ค. ์ด๋ฌํ ๊ณ์ฐ์ ๋ ๋ ํจ์ ๋ฐ์ผ๋ก ์ฎ๊ธฐ๊ฑฐ๋ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์.
์ผ๋ฐ์ ์ธ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์๊ณผ ์ต์ ํ ๊ธฐ๋ฒ
React ํ๋กํ์ผ๋ฌ๋ React ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ค์ํ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค. ๋ค์์ ๋ช ๊ฐ์ง ์ผ๋ฐ์ ์ธ ๋ฌธ์ ์ ๊ทธ ํด๊ฒฐ ๊ธฐ๋ฒ์ ๋๋ค:
1. ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง
React ์ ํ๋ฆฌ์ผ์ด์ ์์ ๊ฐ์ฅ ํํ ์ฑ๋ฅ ๋ฌธ์ ์ค ํ๋๋ ๋ถํ์ํ ๋ฆฌ๋ ๋๋ง์ ๋๋ค. ์ด๋ ์ปดํฌ๋ํธ์ prop์ด ๋ณ๊ฒฝ๋์ง ์์์์๋ ๋ถ๊ตฌํ๊ณ ๋ฆฌ๋ ๋๋ง๋ ๋ ๋ฐ์ํฉ๋๋ค.
์ต์ ํ ๊ธฐ๋ฒ:
- ๋ฉ๋ชจ์ด์ ์ด์
(Memoization):
React.memo๊ณ ์ฐจ ์ปดํฌ๋ํธ๋ฅผ ์ฌ์ฉํ์ฌ ํจ์ํ ์ปดํฌ๋ํธ๋ฅผ ๋ฉ๋ชจ์ด์ฆํ์ฌ prop์ด ๋ณ๊ฒฝ๋์ง ์์ ๊ฒฝ์ฐ ๋ฆฌ๋ ๋๋ง๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. ์ด๋ ์์ ํจ์ํ ์ปดํฌ๋ํธ์ ํนํ ํจ๊ณผ์ ์ ๋๋ค. ํด๋์ค ์ปดํฌ๋ํธ์ ๊ฒฝ์ฐ, ์์ prop ๋ฐ state ๋น๊ต๋ฅผ ์ํํ๋ `PureComponent`๋ฅผ ์ฌ์ฉํ์ธ์. useMemo๋ฐuseCallbackํ : ์ด ํ ๋ค์ ์ฌ์ฉํ์ฌ ๋น์ฉ์ด ๋ง์ด ๋๋ ๊ณ์ฐ๊ณผ ์ฝ๋ฐฑ์ ๋ฉ๋ชจ์ด์ฆํ์ฌ ๋งค ๋ ๋๋ง ์๋ง๋ค ๋ค์ ์์ฑ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค.- ๋ถ๋ณ ๋ฐ์ดํฐ ๊ตฌ์กฐ: ๋ถ๋ณ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ๋ณ๊ฒฝ์ด ํ์ํ ๋๋ง ๋ฆฌ๋ ๋๋ง์ ํธ๋ฆฌ๊ฑฐํ๋๋ก ํฉ๋๋ค. Immutable.js๋ Immer์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, ๋ฐฐ์ด์ ์ ๋ฐ์ดํธํ๋ ๊ฒฝ์ฐ ๊ธฐ์กด ๋ฐฐ์ด์ ๋ณ๊ฒฝํ๋ ๋์ *์* ๋ฐฐ์ด์ ์์ฑํ์ธ์.
shouldComponentUpdate์๋ช ์ฃผ๊ธฐ ๋ฉ์๋: ํด๋์ค ์ปดํฌ๋ํธ์ ๊ฒฝ์ฐ,shouldComponentUpdate์๋ช ์ฃผ๊ธฐ ๋ฉ์๋๋ฅผ ๊ตฌํํ์ฌ ์ปดํฌ๋ํธ๊ฐ ์ธ์ ๋ฆฌ๋ ๋๋ง๋์ด์ผ ํ๋์ง๋ฅผ ์๋์ผ๋ก ์ ์ดํฉ๋๋ค. ์ด ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด ํ์ฌ props์ state๋ฅผ ๋ค์ props์ state์ ๋น๊ตํ์ฌ ์ปดํฌ๋ํธ๊ฐ ๋ฆฌ๋ ๋๋ง๋์ด์ผ ํ๋ฉดtrue๋ฅผ, ๊ทธ๋ ์ง ์์ผ๋ฉดfalse๋ฅผ ๋ฐํํ ์ ์์ต๋๋ค. ์ด๋ฅผ ์ ์คํ๊ฒ ์ฌ์ฉํ๋ฉด ์ฑ๋ฅ์ ๊ทน์ ์ผ๋ก ํฅ์์ํฌ ์ ์์ต๋๋ค.
2. ํฐ ์ปดํฌ๋ํธ ํธ๋ฆฌ
๊น๊ฒ ์ค์ฒฉ๋ ์ปดํฌ๋ํธ ํธ๋ฆฌ๋ React๊ฐ UI๋ฅผ ์ ๋ฐ์ดํธํ๊ธฐ ์ํด ์ ์ฒด ํธ๋ฆฌ๋ฅผ ์ํํด์ผ ํ๋ฏ๋ก ๋ ๋๋ง ์๊ฐ์ด ๋๋ ค์ง ์ ์์ต๋๋ค.
์ต์ ํ ๊ธฐ๋ฒ:
- ์ปดํฌ๋ํธ ๋ถํ : ํฐ ์ปดํฌ๋ํธ๋ฅผ ๋ ์๊ณ ๊ด๋ฆฌํ๊ธฐ ์ฌ์ด ์ปดํฌ๋ํธ๋ก ๋๋๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ปดํฌ๋ํธ๋ฅผ ๋ฆฌ๋ ๋๋งํ ๋ React๊ฐ ํด์ผ ํ ์์ ์ ์์ ์ค์ผ ์ ์์ต๋๋ค.
- ๊ฐ์ํ(Virtualization): ํฐ ๋ฐ์ดํฐ ๋ชฉ๋ก์ ํ์ํ ๋, ๊ฐ์ํ ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ํ๋ฉด์ ๋ณด์ด๋ ํญ๋ชฉ๋ง ๋ ๋๋งํฉ๋๋ค.
react-window๋react-virtualized์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋์์ด ๋ ์ ์์ต๋๋ค. - ์ฝ๋ ๋ถํ (Code Splitting): ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์์ ๋ฐ๋ผ ๋ก๋ํ ์ ์๋ ๋ ์์ ์ฒญํฌ๋ก ๋๋๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ์ค์ด๊ณ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค. ๋์ ์ํฌํธ(dynamic imports)๋ React Loadable๊ณผ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฌ์ฉํ์ธ์.
3. ๋ ๋ ํจ์ ๋ด์ ๋ฌด๊ฑฐ์ด ๊ณ์ฐ
๋ ๋ ํจ์์์ ๋ฌด๊ฑฐ์ด ๊ณ์ฐ์ ์ํํ๋ฉด ๋ ๋๋ง ์๊ฐ์ด ํฌ๊ฒ ๋๋ ค์ง ์ ์์ต๋๋ค. ๋ ๋ ํจ์๋ ๊ฐ๋ฅํ ํ ๊ฐ๋ณ๊ฒ ์ ์งํด์ผ ํฉ๋๋ค.
์ต์ ํ ๊ธฐ๋ฒ:
- ๋ฉ๋ชจ์ด์ ์ด์
(Memoization):
useMemo๋React.memo๋ฅผ ์ฌ์ฉํ์ฌ ๋น์ฉ์ด ๋ง์ด ๋๋ ๊ณ์ฐ ๊ฒฐ๊ณผ๋ฅผ ์บ์ฑํ๊ณ ๋งค ๋ ๋๋ง ์๋ง๋ค ๋ค์ ๊ณ์ฐ๋๋ ๊ฒ์ ๋ฐฉ์งํฉ๋๋ค. - ์น ์์ปค(Web Workers): ๊ณ์ฐ ์ง์ฝ์ ์ธ ์์ ์ ์น ์์ปค์ ์คํ๋ก๋ํ์ฌ ๋ฉ์ธ ์ค๋ ๋๋ฅผ ์ฐจ๋จํ์ง ์๊ณ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๋๋ก ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด UI์ ๋ฐ์์ฑ์ ์ ์งํ ์ ์์ต๋๋ค.
- ๋๋ฐ์ด์ฑ(Debouncing)๊ณผ ์ค๋กํ๋ง(Throttling): ๋๋ฐ์ด์ฑ๊ณผ ์ค๋กํ๋ง ๊ธฐ๋ฒ์ ์ฌ์ฉํ์ฌ ํนํ ์ฌ์ฉ์ ์ ๋ ฅ์ ๋ํ ํจ์ ํธ์ถ ๋น๋๋ฅผ ์ ํํฉ๋๋ค. ์ด๋ ๊ณผ๋ํ ๋ฆฌ๋ ๋๋ง์ ๋ฐฉ์งํ๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์ต๋๋ค.
4. ๋นํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ
๋นํจ์จ์ ์ธ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ๋ฉด ํนํ ๋๊ท๋ชจ ๋ฐ์ดํฐ ์ธํธ๋ฅผ ๋ค๋ฃฐ ๋ ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค. ๋น๋ฉดํ ์์ ์ ์ ํฉํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ ํํ์ธ์.
์ต์ ํ ๊ธฐ๋ฒ:
- ๋ฐ์ดํฐ ๊ตฌ์กฐ ์ต์ ํ: ์ํํ๋ ์์ ์ ์ ํฉํ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ธ์. ์๋ฅผ ๋ค์ด, ํค๋ฅผ ์ด์ฉํ ๋น ๋ฅธ ์กฐํ๋ฅผ ์ํด์๋ ๊ฐ์ฒด ๋์ Map์ ์ฌ์ฉํ๊ณ , ๋น ๋ฅธ ๋ฉค๋ฒ์ญ ํ์ธ์ ์ํด์๋ Set์ ์ฌ์ฉํ์ธ์.
- ๊น๊ฒ ์ค์ฒฉ๋ ๊ฐ์ฒด ํผํ๊ธฐ: ๊น๊ฒ ์ค์ฒฉ๋ ๊ฐ์ฒด๋ ์ํํ๊ณ ์ ๋ฐ์ดํธํ๋ ๋ฐ ๋๋ฆด ์ ์์ต๋๋ค. ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ํํํํ๊ฑฐ๋ ๋ถ๋ณ ๋ฐ์ดํฐ ๊ตฌ์กฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฑ๋ฅ์ ํฅ์์ํค๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด์ธ์.
5. ๋์ฉ๋ ์ด๋ฏธ์ง ๋ฐ ๋ฏธ๋์ด
๋์ฉ๋ ์ด๋ฏธ์ง์ ๋ฏธ๋์ด ํ์ผ์ ํ์ด์ง ๋ก๋ ์๋์ ์ ๋ฐ์ ์ธ ์ฑ๋ฅ์ ํฐ ์ํฅ์ ๋ฏธ์น ์ ์์ต๋๋ค. ์ด๋ฌํ ์์ฐ์ ์น์ ๋ง๊ฒ ์ต์ ํํ์ธ์.
์ต์ ํ ๊ธฐ๋ฒ:
- ์ด๋ฏธ์ง ์ต์ ํ: ์ด๋ฏธ์ง๋ฅผ ์์ถํ๊ณ , ์ ์ ํ ํฌ๊ธฐ๋ก ์กฐ์ ํ๋ฉฐ, ์ ์ ํ ํ์ผ ํ์(์: WebP)์ ์ฌ์ฉํ์ฌ ์น์ ๋ง๊ฒ ์ต์ ํํ์ธ์. ImageOptim์ด๋ TinyPNG์ ๊ฐ์ ๋๊ตฌ๊ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ์ง์ฐ ๋ก๋ฉ(Lazy Loading): ์ง์ฐ ๋ก๋ฉ์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ๋ฐ ๊ธฐํ ๋ฏธ๋์ด ํ์ผ์ด ํ๋ฉด์ ๋ณด์ผ ๋๋ง ๋ก๋ํ๋๋ก ํฉ๋๋ค. ์ด๋ ์ ํ๋ฆฌ์ผ์ด์
์ ์ด๊ธฐ ๋ก๋ ์๊ฐ์ ํฌ๊ฒ ์ค์ผ ์ ์์ต๋๋ค.
react-lazyload์ ๊ฐ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ ์ง์ฐ ๋ก๋ฉ ๊ตฌํ์ ๋จ์ํํ ์ ์์ต๋๋ค. - ์ฝํ ์ธ ์ ์ก ๋คํธ์ํฌ(CDN): CDN์ ์ฌ์ฉํ์ฌ ์ด๋ฏธ์ง ๋ฐ ๋ฏธ๋์ด ํ์ผ์ ์ ์ธ๊ณ ์๋ฒ์ ๋ฐฐํฌํฉ๋๋ค. ์ด๋ ๋ค๋ฅธ ์ง์ญ์ ์ฌ์ฉ์๋ฅผ ์ํ ๋ก๋ ์๊ฐ์ ๊ฐ์ ํ ์ ์์ต๋๋ค.
๊ณ ๊ธ ํ๋กํ์ผ๋ง ๊ธฐ๋ฒ
์์์ ์ค๋ช ํ ๊ธฐ๋ณธ ํ๋กํ์ผ๋ง ๊ธฐ๋ฒ ์ธ์๋, React ํ๋กํ์ผ๋ฌ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ฑ๋ฅ์ ๋ํ ๋ ๊น์ ํต์ฐฐ๋ ฅ์ ์ป๋ ๋ฐ ๋์์ด ๋๋ ๋ช ๊ฐ์ง ๊ณ ๊ธ ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค:
- ์ํธ์์ฉ ํ๋กํ์ผ๋ง: ํ๋กํ์ผ๋ฌ๋ฅผ ์ฌ์ฉํ๋ฉด ๋ฒํผ ํด๋ฆญ์ด๋ ์์ ์ ์ถ๊ณผ ๊ฐ์ ์ฌ์ฉ์ ์ํธ์์ฉ๋ณ๋ก ๋ ๋๋ง์ ๊ทธ๋ฃนํํ ์ ์์ต๋๋ค. ์ด๋ ํน์ ์ฌ์ฉ์ ํ๋ฆ์ ํน์ ํ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ด ๋ ์ ์์ต๋๋ค.
- ์ปค๋ฐ ํ (Commit Hooks): ์ปค๋ฐ ํ ์ ์ฌ์ฉํ๋ฉด ๊ฐ ์ปค๋ฐ(์ฆ, React๊ฐ DOM์ ์ ๋ฐ์ดํธํ ๋๋ง๋ค) ํ์ ์ฌ์ฉ์ ์ ์ ์ฝ๋๋ฅผ ์คํํ ์ ์์ต๋๋ค. ์ด๋ ์ฑ๋ฅ ๋ฐ์ดํฐ๋ฅผ ๋ก๊น ํ๊ฑฐ๋ ๋ค๋ฅธ ์์ ์ ํธ๋ฆฌ๊ฑฐํ๋ ๋ฐ ์ ์ฉํ ์ ์์ต๋๋ค.
- ํ๋กํ ๊ฐ์ ธ์ค๊ธฐ ๋ฐ ๋ด๋ณด๋ด๊ธฐ: ํ๋กํ์ผ๋ฌ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ณ ๋ด๋ณด๋ด์ ๋ค๋ฅธ ๊ฐ๋ฐ์์ ๊ณต์ ํ๊ฑฐ๋ ์คํ๋ผ์ธ์์ ๋ถ์ํ ์ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ํ์ ๊ณผ ๋ ์ฌ์ธต์ ์ธ ๋ถ์์ด ๊ฐ๋ฅํฉ๋๋ค.
์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ๊ธ๋ก๋ฒ ๊ณ ๋ ค ์ฌํญ
React ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ต์ ํํ ๋, ์ ์ธ๊ณ ์ฌ์ฉ์์ ์๊ตฌ๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ๋ค์์ ์ ๋ ํด์ผ ํ ๋ช ๊ฐ์ง ์์์ ๋๋ค:
- ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ(Latency): ์ธ๊ณ ์ฌ๋ฌ ์ง์ญ์ ์ฌ์ฉ์๋ ๋ค์ํ ์์ค์ ๋คํธ์ํฌ ์ง์ฐ ์๊ฐ์ ๊ฒฝํํ ์ ์์ต๋๋ค. ์ง์ฐ ์๊ฐ์ด ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ์ต์ํํ๋๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํํ์ธ์. CDN์ ์ฌ์ฉํ๋ฉด ๋ฉ๋ฆฌ ๋จ์ด์ง ์์น์ ์ฌ์ฉ์๋ฅผ ์ํ ๋ก๋ฉ ์๊ฐ์ ํฌ๊ฒ ๊ฐ์ ํ ์ ์์ต๋๋ค.
- ๊ธฐ๊ธฐ ์ฑ๋ฅ: ์ฌ์ฉ์๋ ๋ค์ํ ์ฑ๋ฅ์ ๊ฐ์ง ๋ค์ํ ๊ธฐ๊ธฐ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ์ํ ์ ์์ต๋๋ค. ๊ตฌํ ๋ฐ ์ ์ฌ์ ๊ธฐ๊ธฐ๋ฅผ ํฌํจํ ๋ค์ํ ๊ธฐ๊ธฐ์์ ์ ์๋ํ๋๋ก ์ ํ๋ฆฌ์ผ์ด์ ์ ์ต์ ํํ์ธ์. ๋ฐ์ํ ๋์์ธ ๊ธฐ๋ฒ์ ์ฌ์ฉํ๊ณ ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ์ ๋ง๊ฒ ์ด๋ฏธ์ง๋ฅผ ์ต์ ํํ๋ ๊ฒ์ ๊ณ ๋ คํ์ธ์.
- ํ์งํ(Localization): ์ ํ๋ฆฌ์ผ์ด์ ์ ํ์งํํ ๋, ํ์งํ๊ฐ ์ฑ๋ฅ์ ๋ฏธ์น๋ ์ํฅ์ ์ผ๋์ ๋์ธ์. ์๋ฅผ ๋ค์ด, ๊ธด ํ ์คํธ ๋ฌธ์์ด์ ๋ ์ด์์๊ณผ ๋ ๋๋ง ์๊ฐ์ ์ํฅ์ ์ค ์ ์์ต๋๋ค. ์ฑ๋ฅ ์ํฅ์ ์ต์ํํ๋๋ก ํ์งํ ํ๋ก์ธ์ค๋ฅผ ์ต์ ํํ์ธ์.
- ์ ๊ทผ์ฑ(Accessibility): ์ฑ๋ฅ ์ต์ ํ๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ ๊ทผ์ฑ์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์น์ง ์๋๋ก ํ์ธ์. ์๋ฅผ ๋ค์ด, ์ด๋ฏธ์ง ์ง์ฐ ๋ก๋ฉ์ ์คํฌ๋ฆฐ ๋ฆฌ๋๊ฐ ์ด๋ฏธ์ง์ ์ ๊ทผํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์์ต๋๋ค. ์ด๋ฏธ์ง์ ๋์ฒด ํ ์คํธ๋ฅผ ์ ๊ณตํ๊ณ ARIA ์์ฑ์ ์ฌ์ฉํ์ฌ ์ ๊ทผ์ฑ์ ํฅ์์ํค์ธ์.
- ๋ค๋ฅธ ์ง์ญ์์ ํ ์คํธํ๊ธฐ: ๋ค์ํ ์ง์ญ์์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ํ ์คํธํ์ฌ ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ์ ์๋ํ๋์ง ํ์ธํ์ธ์. WebPageTest๋ Pingdom๊ณผ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ๋ค๋ฅธ ์์น์์์ ํ์ด์ง ๋ก๋ ์๊ฐ์ ์ธก์ ํ์ธ์.
React ์ฑ๋ฅ ์ต์ ํ๋ฅผ ์ํ ๋ชจ๋ฒ ์ฌ๋ก
React ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ต์ ํํ ๋ ๋ฐ๋ผ์ผ ํ ๋ช ๊ฐ์ง ๋ชจ๋ฒ ์ฌ๋ก๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
- ์ ๊ธฐ์ ์ผ๋ก ํ๋กํ์ผ๋งํ๊ธฐ: ํ๋กํ์ผ๋ง์ ๊ฐ๋ฐ ์ํฌํ๋ก์ ์ ๊ธฐ์ ์ธ ๋ถ๋ถ์ผ๋ก ๋ง๋์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์กฐ๊ธฐ์ ๋ฐ๊ฒฌํ๊ณ ํฐ ๋ฌธ์ ๋ก ๋ฐ์ ํ๋ ๊ฒ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค.
- ๊ฐ์ฅ ํฐ ๋ณ๋ชฉ ํ์๋ถํฐ ์์ํ๊ธฐ: ์ ์ฒด ๋ ๋๋ง ์๊ฐ์ ๊ฐ์ฅ ๋ง์ด ๊ธฐ์ฌํ๋ ์ปดํฌ๋ํธ ์ต์ ํ์ ์ง์คํ์ธ์. React ํ๋กํ์ผ๋ฌ๋ ์ด๋ฌํ ์ปดํฌ๋ํธ๋ฅผ ์๋ณํ๋ ๋ฐ ๋์์ ์ค ์ ์์ต๋๋ค.
- ๋ณ๊ฒฝ ์ ํ ์ธก์ ํ๊ธฐ: ๋ณ๊ฒฝ ์ฌํญ์ ์ ์ฉํ๊ธฐ ์ ๊ณผ ํ์ ํญ์ ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ์ ์ธก์ ํ์ธ์. ์ด๋ ๊ฒ ํ๋ฉด ์ต์ ํ๊ฐ ์ค์ ๋ก ์ฑ๋ฅ์ ํฅ์์ํค๊ณ ์๋์ง ํ์ธํ ์ ์์ต๋๋ค.
- ๊ณผ๋ํ๊ฒ ์ต์ ํํ์ง ์๊ธฐ: ์ค์ ๋ก ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ์ผ์ผํค์ง ์๋ ์ฝ๋๋ฅผ ์ต์ ํํ๋ ๊ฒ์ ํผํ์ธ์. ์ฃ๋ถ๋ฅธ ์ต์ ํ๋ ์ฝ๋๋ฅผ ๋ ๋ณต์กํ๊ณ ์ ์ง๋ณด์ํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ค ์ ์์ต๋๋ค.
- ์ต์ ์ ๋ณด ์ ์งํ๊ธฐ: ์ต์ React ์ฑ๋ฅ ์ต์ ํ ๊ธฐ๋ฒ๊ณผ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๊ณ์ ํ์ ํ์ธ์. React ํ์ ์ง์์ ์ผ๋ก React์ ์ฑ๋ฅ์ ๊ฐ์ ํ๊ธฐ ์ํด ๋ ธ๋ ฅํ๊ณ ์์ผ๋ฏ๋ก ์ต์ ์ ๋ณด๋ฅผ ์ ์งํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค.
๊ฒฐ๋ก
React ํ๋กํ์ผ๋ฌ๋ React ์ ํ๋ฆฌ์ผ์ด์ ์ ์ฑ๋ฅ ๋ณ๋ชฉ ํ์์ ์๋ณํ๊ณ ํด๊ฒฐํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉํ ๋๊ตฌ์ ๋๋ค. ํ๋กํ์ผ๋ฌ ์ฌ์ฉ๋ฒ์ ์ดํดํ๊ณ ์ด ๋ธ๋ก๊ทธ ๊ฒ์๋ฌผ์์ ์ค๋ช ํ ์ต์ ํ ๊ธฐ๋ฒ์ ์ ์ฉํจ์ผ๋ก์จ, ์ฌ๋ฌ๋ถ์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ ์ธ๊ณ ์ฌ์ฉ์์๊ฒ ๋ถ๋๋ฝ๊ณ ๋งค๋ ฅ์ ์ธ ์ฌ์ฉ์ ๊ฒฝํ์ ์ ๊ณตํ๋๋ก ๋ณด์ฅํ ์ ์์ต๋๋ค. ์ ๊ธฐ์ ์ผ๋ก ํ๋กํ์ผ๋งํ๊ณ , ๊ฐ์ฅ ํฐ ๋ณ๋ชฉ ํ์์ ์ง์คํ๋ฉฐ, ์ต์ ํ๊ฐ ํจ๊ณผ์ ์ธ์ง ํ์ธํ๊ธฐ ์ํด ๊ฒฐ๊ณผ๋ฅผ ์ธก์ ํ๋ ๊ฒ์ ๊ธฐ์ตํ์ธ์. ์ด๋ฌํ ๋ชจ๋ฒ ์ฌ๋ก๋ฅผ ๋ฐ๋ฅด๋ฉด ์ ์ธ๊ณ ์ฌ์ฉ์์ ์๊ตฌ๋ฅผ ์ถฉ์กฑํ๋ ๊ณ ์ฑ๋ฅ React ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.